Spring JDBC-তে DataSource হল ডেটাবেস সংযোগ ব্যবস্থাপনার একটি প্রধান উপাদান। এটি ডেটাবেস সংযোগের জন্য প্রয়োজনীয় তথ্য (যেমন URL, ইউজারনেম, পাসওয়ার্ড) সরবরাহ করে। Spring Framework-এ আমরা সাধারণত DriverManagerDataSource বা HikariDataSource ব্যবহার করি, তবে এটি অন্যান্য DataSource ইমপ্লিমেন্টেশনকেও সমর্থন করে।
নীচে উদাহরণসহ Spring JDBC-তে DataSource কনফিগারেশনের এবং ব্যবহারের ধাপগুলো দেখানো হয়েছে:
প্রথমে spring-jdbc
এবং ড্রাইভারের নির্ভরশীলতা যোগ করুন।
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
DriverManagerDataSource ব্যবহার করে একটি DataSource তৈরি করা যায়।
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class DataSourceConfig {
public DriverManagerDataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
return dataSource;
}
}
JdbcTemplate ব্যবহার করে ডেটাবেস অপারেশন করা হয়।
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateExample {
public static void main(String[] args) {
// DataSource Config
DataSourceConfig config = new DataSourceConfig();
DriverManagerDataSource dataSource = config.getDataSource();
// JdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// Table Creation Example
String createTableQuery = "CREATE TABLE IF NOT EXISTS users (" +
"id INT AUTO_INCREMENT PRIMARY KEY, " +
"name VARCHAR(50), " +
"email VARCHAR(50))";
jdbcTemplate.execute(createTableQuery);
// Insert Query
String insertQuery = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(insertQuery, "John Doe", "john@example.com");
// Select Query
String selectQuery = "SELECT name FROM users WHERE email = ?";
String name = jdbcTemplate.queryForObject(selectQuery, new Object[]{"john@example.com"}, String.class);
System.out.println("User Name: " + name);
}
}
RowMapper ব্যবহার করে ResultSet থেকে জটিল অবজেক্ট তৈরি করা সহজ।
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setEmail(rs.getString("email"));
return user;
}
}
import java.util.List;
public class FetchUsersExample {
public static void main(String[] args) {
// DataSource Config
DataSourceConfig config = new DataSourceConfig();
DriverManagerDataSource dataSource = config.getDataSource();
// JdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// Fetching All Users
String selectAllQuery = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(selectAllQuery, new UserRowMapper());
for (User user : users) {
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
System.out.println("User Email: " + user.getEmail());
}
}
}
HikariCP একটি উচ্চ-কার্যক্ষমতার DataSource ইমপ্লিমেন্টেশন।
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
public class HikariDataSourceConfig {
public DataSource getHikariDataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
config.setUsername("your_username");
config.setPassword("your_password");
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
config.setMaximumPoolSize(10); // Optional: Connection pool size
return new HikariDataSource(config);
}
}
Hikari DataSource ব্যবহার করে JdbcTemplate তৈরি করার পদ্ধতি একই।
উপরের উদাহরণগুলো ব্যবহার করে আপনি ডেটাবেসে ডেটা যোগ করতে, পড়তে এবং পরিচালনা করতে পারবেন।
Read more